package com.smart.community.user.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smart.community.commons.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 验证码实体类
 * 
 * @author Wu.Liang
 * @since 2024-12-21
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_captcha")
public class Captcha extends BaseEntity {

    /**
	 * @author Wu.Liang
	 * @date 2025年7月29日
	 */
	private static final long serialVersionUID = 5165651945819652010L;

	/**
     * 验证码标识
     */
    @TableField("captcha_id")
    private String captchaId;

    /**
     * 验证码类型：1-图形验证码，2-短信验证码，3-邮箱验证码
     */
    @TableField("captcha_type")
    private Integer captchaType;

    /**
     * 验证码值
     */
    @TableField("captcha_value")
    private String captchaValue;

    /**
     * 目标（手机号/邮箱）
     */
    @TableField("target")
    private String target;

    /**
     * IP地址
     */
    @TableField("ip_address")
    private String ipAddress;

    /**
     * 用户代理
     */
    @TableField("user_agent")
    private String userAgent;

    /**
     * 是否已使用：0-否，1-是
     */
    @TableField("used")
    private Integer used;

    /**
     * 过期时间
     */
    @TableField("expire_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expireTime;

    /**
     * 明确排除status字段，防止MyBatis Plus自动包含不存在的字段
     */
    @TableField(exist = false)
    private Integer status;

    /**
     * 明确排除其他可能不存在的字段
     */
    @TableField(exist = false)
    private String statusName;

    @TableField(exist = false)
    private Integer enabled;

    @TableField(exist = false)
    private String enabledName;
} 